pgsql/migrations: add index on Vulnerability_Notification.deleted_at #280
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
searchNotificationAvailable
never effectively use any indexes because:notified_at < $1
, where $1 is a recent timestamp, returns themajority of the table and therefore it is cheaper for PostgreSQL
to use a sequential scan on the table.
deleted_at IS NULL
.However, when Clair has been running for long enough, the grand majority
of rows (99%+) are expected to have a non-NULL
deleted_at
field. Thiscommit adds a new index on this very field in order to fetch the
remaining 1% in the blink of an eye.
In other words, instead of realizing a full table scan for each
searchNotificationAvailable
query, we'll use the small branch of a newindex, reducing the total cost from over 30k to a mere 150 on a Clair
database that has already managed more than 1 000 000 notifications.